export interface DataPoint {
  value: number;
  diff?: number;
}

export interface DataState {
  filePath: string;
  fileName: string;
  columnNames: string[];
  selectedColumn: string;
  startRow: number;
  endRow: number;
  data: number[] | null;
  sequenceLength: number;
  isLoading: boolean;
}

export interface PredictionResult {
  predictedValues: Array<{
    value: number;
    probability: number;
  }>;
  attentionWeights: number[][];
}

export interface ModelConfig {
  dim: number;
  depth: number;
  heads: number;
  mlpDim: number;
  dropout: number;
  learningRate: number;
  batchSize: number;
  epochs: number;
}

export interface ModelState {
  config: ModelConfig;
  isTraining: boolean;
  progress: number;
  loss: number;
  accuracy: number;
  isOptimizing: boolean;
  optimizationProgress: number;
  predictionResult: PredictionResult | null;
  evaluationMetrics: {
    accuracy: number;
    topKAccuracy: number;
    f1Score: number;
    precision: number;
    recall: number;
  } | null;
  confusionMatrix: number[][] | null;
}

export interface AppState {
  data: DataState;
  model: ModelState;
  activeTab: 'data' | 'prediction' | 'evaluation';
}